`timescale 1ns / 1ps
`include "defines.v"
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2021/12/08 15:29:22
// Design Name: 
// Module Name: pc_reg
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module pc_reg(
    input   wire    clk,    // 时钟信号
    input   wire    rst,    // 复位信号
    output reg[`InstAddrBus] pc,    // PC值
    output reg      ce  // 指令寄存器使能信号
    );

    always @ (posedge clk) begin
        if (rst == `RstEnable) begin
            ce <= `ChipDisable;     // 复位时指令存储器禁用
        end else begin
            ce <= `ChipEnable;      // 复位结束后，指令存储器使能
        end
    end

    always @ (posedge clk) begin
        if (ce == `ChipDisable) begin
            pc <= 32'h00000000; // 指令存储器禁用的时候，PC为0
        end else begin
            pc <= pc + 4'h4;    // 指令存储器使能的时候，PC的值每个时钟周期+4
        end
    end
endmodule
